package com.psychologyCommunity.Community.entity;

//分页的逻辑 第n页就要查询出那页的数据 就是点上一页 下一页，
// 每一个按钮（链接）都会转换成一个页码，比如说3 ，你需要把页码传给服务端，
// 服务端查询到第三页的数据  然后给客户端 ，
// 服务端除了返回数据之外，比如说最多多少页，当前多少页，这些信息也要反馈过来
//因为也要显示页码，从第几页到第几页，一共有多少页 我会不会超出这个范围--即 服务端也要返回一些与分页有关的信息
//客户端给服务端传一些信息，服务端计算完之后 给客户端反馈回去 ，这个来回传的数据比较多 --最好写一个组件封装一下 方便复用

//封装分页相关的信息
public class Page {
    //当前的页码 默认值是1
    private int current=1;

    //显示上限 默认值是10条
    private int limit=10;

    //数据总数（用于计算总页数） 要数据总数/limit
    //为什么要总页数 就是因为把响应返回给页面之后，页面要显示页面，要显示多少页  不能超出总页数
    private int rows;

    //查询路径 --首页 第几页 都要带路径 ，因为每一个去拼路径就很麻烦，
    // 如果组件里带上了查询路径 能够把这个变量返回给页面 ，页面直接复用这个变量（分页的链接） 就很方面
    private String path;

    public int getCurrent() {
        return current;
    }

    //再set当前的页码 肯定要做一些判断 ，比如说页码肯定不能是负数 或者特别大的数(先不管)
    public void setCurrent(int current) {
        if(current>=1){
            this.current = current;
        }

    }

    public int getLimit() {
        return limit;
    }
     //对每个页面显示的数据给一个限制 1-100
     // --因为每页显示太多的数据，一是对服务器的压力太大，二是这么多数据给浏览器，浏览器就很卡 用户体验也 不好
    public void setLimit(int limit) {
        if(limit>=1 && limit<=100){
            this.limit = limit;
        }

    }

    public int getRows() {
        return rows;
    }
    //查出的数据必须大于1 才能set
    public void setRows(int rows) {
        if(rows>=1){
            this.rows = rows;
        }

    }
    public String getPath() {
        return path;
    }

    public void setPath(String path) {
        this.path = path;
    }
    //而且需要当前页的起始行 给浏览器 可以通过当前页来算
    public int getSetOff(){
        //current *limit-1imit
       return  (current-1)*limit;
    }

    //获取总页面
    public int getTotal(){
        //rows / limit [+1]  --总数据能除尽 就直接返回正数 要是有余数 相当于得+1
        if(rows%limit==0){
            return rows/limit;
        }else {
             return rows/limit +1;
        }
    }

    //这表示从第几页到第几页
    //获取起始页面 (当前页离他最近的前两页 ，但是当前页可能是第一页 不能让他减出负数)
    public int getFrom(){
        int from =current-2;
        return from< 1 ? 1: from;
    }
    //获取结束页码 --等于当前页加上二 防止当前页是最后一页  防止超出总页数要做出判断
    public int getTo(){
        int to=current+2;
        int total=getTotal();
        return to>total ?total :to;//如果大于总页数 就返回总页数 否则就直接返回to
    }
}
